Kolla-Ansible 本地仓库部署
环境准备
在 OpenStack 单机部署 —— Kolla-Ansible 的基础上,改用本地镜像仓库,从源码构建镜像并部署 OpenStack all-in-one。
部署本地仓库 Docker Registry
kolla-ansible -i all-in-one bootstrap-servers
会改变 docker 的网络配置,需要删除桥接配置,即启用桥接,否则构建镜像的过程中无法下载依赖库。
另外,还可以添加国内的镜像源,最终 /etc/docker/daemon.json 配置文件的内容如下:
- 假设本机 ip 为 10.1.0.240
1 | { |
修改配置文件后需要重启 docker 服务。
1 | # docker 网络配置 |
运行本地镜像仓库,由于 Keystone 使用了 5000 端口,因此这里指定映射到 4000 端口。
1 | # 本地镜像仓库 |
使用本地仓库
使用 tox 创建配置文件
1 | # 安装 tox |
下载 Keystone 源码,指定 Victoria 版本
1 | # 下载源码 |
修改配置文件,假设本机 ip 为 10.1.0.240
1 | # 配置源码路径 |
构建镜像,使用 &>
将输出重定向到文件中
1 | # 源码构建 Keystone 镜像 |
修改配置文件,这里的 openstack_release 有要求(随便填会出错)
- 根据构建的镜像标签填入,需要指定 registry 中存在的标签
1 | # 使用本地仓库 |
构建完毕后,使用新镜像更新当前环境
- 注意:依赖的基础镜像也需要 push 到本地镜像仓库,并打上对应的标签(例如 fluentd)
1 | # 打标签 |
其他
kolla-ansible 相关操作
1 | # 删除容器 |
相关文件
1 | # dockerfile 相关 |
清除容器重新部署,通常不用 ./kolla-ansibletools/cleanup-host
1 | ./kolla-ansible/tools/cleanup-containers |
问题与解决
nova-compute 注册失败
查看日志信息说是连接不上 libvirt
配置并重启 libvirt
1 | sudo vim /etc/libvirt/libvirtd.conf |
重新部署
1 | # 删除容器 |
不安装和配置 libvirt,且 /etc/kolla/globals.yml 也不配置 nova_compute_virt_type
也能正常执行。
安装完毕后注释该配置,重新 upgrade 正常,不注释貌似也行(玄学)。
官方指出,由于技术原因,配置 qemu 后使用 kolla-ansible upgrade
可能出错。
数据库迁移出错
尝试多次无果,回退快照后执行 kolla-ansible upgrade
没有遇到该问题,清除后重新部署应该也可以。
1 | ERROR keystone migrate.exceptions.InvalidRepositoryError: /var/lib/kolla/venv/lib/python3.8/site-packages/keystone/common/sql/migrate_repo |
请求超时
再次执行 kolla-ansible upgrade
没有再遇到该问题。实验过程中发现时不时就会请求超时,通常就重复执行指令,再不行就清除后重新部署。